﻿using ST.Data;
using ST.ModelVM.ProtocolSimHost;

namespace ST.Receiver.Tasks
{
    public abstract class BaseConnection
    {
        public SimWorker SimWorker { get; set; }
        /// 打开
        /// </summary>
        /// <returns></returns>
        public abstract bool Open(Data.ProtocolSim mm);

        
        public abstract bool Close();

        public abstract bool IsOpen();
        public abstract int Available();
        //public abstract int CalcRevLen(int datalen);
        //public abstract byte[] Rev(int datalen);//返回有效数据

        ///// <summary>
        ///// 发送数据  ，每个协议要跟进情况 加上 检验码 或者  流水号
        ///// </summary>
        ///// <param name="data"></param>
        ///// <returns></returns>
        //public abstract int Send(ModelVM.ProtocolSimHost.ProtocolSimHostVM mm, byte[] data, string Memo);


        /// <summary>
        /// 发送数据  ，每个协议要跟进情况 加上 检验码 或者  流水号
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public abstract Task<int> SendAndRev(ProtocolSimHost mm, ReqAndRevVM req);

        /// <summary>
        /// 发送数据  ，每个协议要跟进情况 加上 检验码 或者  流水号
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public abstract Task<int> CmdAndRev(ProtocolSimHost mm, ReqAndRevVM req);
    }
}
